﻿using System;
using System.Web;

namespace fanfu.Common
{
    /// <summary>   
    /// Cookie操作类   
    /// </summary>   
    public sealed class CookieHelper
    {
        /// <summary>
        /// 保存Cookie
        /// </summary>
        /// <param name="CookieName">Cookie名称</param>
        /// <param name="CookieValue">Cookie值</param>
        /// <param name="CookieTime">Cookie过期时间(天),0为关闭页面失效</param>
        public static void SaveCookie(string CookieName, string CookieValue, double CookieTime)
        {
            if (HttpContext.Current.Response.Cookies[CookieName] != null)
                HttpContext.Current.Response.Cookies.Remove(CookieName);

            CookieName = HttpUtility.UrlEncode(CookieName, System.Text.Encoding.UTF8);
            CookieValue = HttpUtility.UrlEncode(CookieValue, System.Text.Encoding.UTF8);
            HttpCookie myCookie = new HttpCookie(CookieName);
            DateTime now = DateTime.Now;
            myCookie.Value = CookieValue;
            if (CookieTime != 0)
            {
                //设置Cookie时间,关闭浏览器不会自动清除Cookie.
                myCookie.Expires = now.AddDays(CookieTime);
                HttpContext.Current.Response.Cookies.Add(myCookie);
            }
            else
            {
                //不设置Cookie时间的话,关闭浏览器会自动清除Cookie,但是有效期多久还未得到证实.
                HttpContext.Current.Response.Cookies.Add(myCookie);
            }
        }

        /// <summary>
        /// 获取Cookie
        /// </summary>
        /// <param name="CookieName">Cookie名称</param>
        /// <returns>Cookie的值</returns>
        public static string GetCookie(string CookieName)
        {
            HttpCookie myCookie = new HttpCookie(CookieName);
            myCookie = HttpContext.Current.Request.Cookies[CookieName];
            if (myCookie != null)
                return HttpUtility.UrlDecode(myCookie.Value,System.Text.Encoding.UTF8);
            else
                return string.Empty;
        }

        /// <summary>
        /// 清除Cookie
        /// </summary>
        /// <param name="CookieName">Cookie名称</param>
        public static void ClearCookie(string CookieName)
        {
            HttpCookie myCookie = new HttpCookie(CookieName);
            DateTime now = DateTime.Now;
            myCookie.Expires = now.AddYears(-1);
            HttpContext.Current.Response.Cookies.Add(myCookie);
        }
    }
}
